function ajax(json) {
	json.method=json.method.toUpperCase() || 'GET';
	json.url=json.url.endsWith('/')?json.url.substring(0, json.url.length-1):json.url;
	json.dataType=json.dataType||'text';
	
	
	let body=json.body;
	return new Promise((resolve, reject)=>{
		let xhr=new XMLHttpRequest();
		
		if(xhr.method==='GET') {
			let data=[];
			for(let key in body) {
				data.push(`${key}=${body[key]}`);
			}
			
			xhr.open('GET', `${xhr.url}/?${data.join('&')}`);
			xhr.send();
		} else {
			let formdata=new FormData();
			for(let key in body) {
				formdata.append(key, body[key]);
			}
			xhr.open('POST', json.url);
			xhr.send(formdata);
		}
		
		xhr.onreadystatechange=function() {
			if(xhr.readyState===4) {
				if(xhr.status>=200 || xhr.status<300 || xhr.status===304) {
					if(json.dataType==='text') {
						resolve(xhr.responseText);
					} else if(json.dataType==='json') {
						resolve(JSON.parse(json.responseText));
					}
				} else {
					reject('请求失败');
				}
			}
		};
	});
}